﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Entidades.Sistema.Base;

namespace Mapping.Sistema.Base
{
    public static class MappingBarrio
    {
        public static List<Barrio> ConsultarBarrios()
        {
            try
            {
                SqlCommand cmdBarrioes = new SqlCommand();
                cmdBarrioes.CommandText = "sp_ConsultarBarrio";
                Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
                cmdBarrioes.CommandType = System.Data.CommandType.StoredProcedure;
                cmdBarrioes.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
                SqlDataReader drBarrioes = cmdBarrioes.ExecuteReader();

                List<Barrio> Barrios = new List<Barrio>();

                while (drBarrioes.Read())
                {
                    Barrio oBarrio = new Barrio();
                    oBarrio.IdBarrio = Convert.ToInt32(drBarrioes["Id_Barrio"]);
                    oBarrio.Nombre = drBarrioes["NombreBarrio"].ToString();
                    oBarrio.Localidad.IdLocalidad = Convert.ToInt32(drBarrioes["IdLocalidad"]);
                    oBarrio.Localidad.Nombre = drBarrioes["NombreLocalidad"].ToString();
                    oBarrio.Localidad.CodigoPostal = Convert.ToInt32(drBarrioes["CodigoPostal"]);
                    oBarrio.Localidad.Provincia.IdProvincia = Convert.ToInt32(drBarrioes["IdProvincia"]);
                    oBarrio.Localidad.Provincia.Nombre = drBarrioes["NombreProvincia"].ToString();
                    Barrios.Add(oBarrio);
                }

                Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");

                return Barrios.OrderBy(x => x.Nombre).ToList();
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
        public static bool AgregarBarrio(Barrio oBarrio)
        {
            SqlCommand cmdBarrio = new SqlCommand();
            cmdBarrio.CommandText = "sp_AgregarBarrio";
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdBarrio.CommandType = System.Data.CommandType.StoredProcedure;
            cmdBarrio.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdBarrio.Parameters.Add("@Id_Barrio", System.Data.SqlDbType.Int).Value = oBarrio.IdBarrio;
            cmdBarrio.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar, 50).Value = oBarrio.Nombre;
            cmdBarrio.Parameters.Add("@Id_Localidad", System.Data.SqlDbType.Int).Value = oBarrio.Localidad.IdLocalidad;
            cmdBarrio.ExecuteNonQuery();
            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }

        public static int ModificarBarrio(Barrio oBarrio)
        {
            SqlCommand cmdBarrio = new SqlCommand();
            cmdBarrio.CommandText = "sp_ModificarBarrio";
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdBarrio.CommandType = System.Data.CommandType.StoredProcedure;
            cmdBarrio.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdBarrio.Parameters.Add("@Id_Barrio", System.Data.SqlDbType.Int).Value = oBarrio.IdBarrio;
            cmdBarrio.Parameters.Add("@Nombre", System.Data.SqlDbType.VarChar, 50).Value = oBarrio.Nombre;
            cmdBarrio.Parameters.Add("@Id_Localidad", System.Data.SqlDbType.Int).Value = oBarrio.Localidad.IdLocalidad;
            int nro = Convert.ToInt32(cmdBarrio.ExecuteScalar());

            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return nro;
        }

        public static bool EliminarBarrio(Barrio oBarrio)
        {
            SqlCommand cmdEliminarBarrio = new SqlCommand();
            cmdEliminarBarrio.CommandText = "sp_EliminarBarrio";
            Servicios.Conexion.ObtenerInstancia().Conectar("Sistema");
            cmdEliminarBarrio.CommandType = System.Data.CommandType.StoredProcedure;
            cmdEliminarBarrio.Connection = Servicios.Conexion.ObtenerInstancia().RetornarConexion();
            cmdEliminarBarrio.Parameters.Add("@Id_Barrio", System.Data.SqlDbType.Int).Value = oBarrio.IdBarrio;
            cmdEliminarBarrio.ExecuteNonQuery();

            Servicios.Conexion.ObtenerInstancia().Desconectar("Sistema");
            return true;
        }
    }
}
